<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
{literal}
[模板输出]
默认值 default
<hr>
输出标量：{$str|default="空"}
<hr>
输出以为关联数组：{$arr1['id']} -- {$arr1['name']}
<hr>
输出以为索引数组：{$arr2.0} -- {$arr2.1}
<!-- 用.  和用['']效果是一样的 -->
<hr>
输出多为数组：{$arr3[0]['id']} -- {$arr3.0.name} -- {$arr3.1.name}
<hr>
输出对象：{$obj->id} -- {$obj:name}
<!--  用->  跟 用 : 效果是一样的  -->
<hr>
输出批量赋值: {$id} -- {$name}
<hr>
{foreach $arr as $key=>$vo}
{$vo.id} -- {$vo.name}<br>
{/foreach}
<hr>
<!-- name 叫数据源 key循环索引 item循环变量 empty默认值  -->
{foreach name="arr" key="key" item='vo' empty="没有数据了。"}
    {$vo.id} -- {$vo.name} -- {$key}<br>
{/foreach}
<hr>
<!-- name 叫数据源 id循环变量 empty默认值  -->
{volist name="arr" id="vo"}
{$vo.id}.{$vo.name}<br/>
{/volist}

<hr>
<!-- name 叫数据源 id循环变量 empty默认值 offset起始位置 length展示长度 mod范围循环技术器key循环变量 $key循环索引值 -->
{volist name="arr" id="vo" mod="1"}
{$vo.id} -- {$vo.name} -- {$mod} -- {$i} -- {$key}<br>
{/volist}
<hr>
<!-- start="开始值" end="结束值" comparison="" step="步进值" name="循环变量名"  -->
{for start="1" end="10" comparison="lt" step="1" name="i"}
    {$i}
{/for}


<hr>
[判断标签]
<!-- name='变量名' value值 等于1就执行正确 等于0 else就执行错误  -->
{eq name='str' value='1'}
正确
    {else / }
    错误
{/eq}
<hr>
[比较标签]
{neq name='str' value='1'}
正确
    {else / }
    错误
{/neq}
<hr>
<!-- egt 是大于等于  gt是大于或小于 -->
{egt name='str' value='1'}
大于等于
    {else/}
    小于
{/egt}
<hr>
<!-- 类型不同 恒等于 -->
{heq name='str' value='1'}
    ===
{/heq}
<hr>
<!--  不恒等于  -->
{heq name='str' value='1'}
    !==
{/heq}
<hr>
[判断标签]
<!-- switch 语句 [判断标签]-->
{switch $str }
{case 1 }输出内容1{/case}
{case 2 }输出内容2{/case}
{default /}默认情况
{/switch}
<hr>
<!--  判断标签-->
{if $str == 1 or $str == 4}
    value1
{elseif $str == 2 /}
    value2
{else /}
    value3
{/if}
<hr>
<!-- 使用in标签来判断模板变量是否在某个范围内 notin和in 相反 -->
{in name="str" value="1,2,3"}
id在范围内
{else/}
id不在范围之内
{/in}
<hr>
{between name="str" value="1,10"}
输出内容1
{/between}
<hr>
<!-- present标签用于判断某个变量是否已经定义  定义直接走 没定义就走else -->
{present name="str"}
{$str}
{else/}
未被定义；
{/present}
<hr>
<!-- empty标签用于判断某个变量是否为空 -->
{empty name='str'}
空
{empty/}
<hr>
<!-- DEFINED标签用于判断某个常量是否有定义 -->
{define name="NAMES" value='1'/}
<hr>


<!--==================day4=============-->
<!--MD5加密 upper更改为大写  按顺序先执行加密在执行大写-->
<!--①函数执行顺序从左到右-->
<!--第一个是参数变量-->
<!--使用管道符|分割-->
<!-- date 转换为时间格式 后面需要带"ymd his" -->
{$str|date="Y-m-d H:i:s"}
<hr>
<!--  转义  不使用（默认）转义-->
{$str1|raw}
<hr>
<!--②冒号开始 执行顺序由里到外-->
<!--substr 是从什么开始取几个  第一个参数 是从下表开始 第二个参数是到第几个结束-->
{:substr(md5($str),0,3)}<br>
<!--strtoupper 是取出这个加密之后的数-->
{:md5(strtoupper($str))}
<hr>
{/literal}
<hr>
<!--三元运算符-->
{// 当$str2 里面为空 或者 为false的时候 会执行：''里面的}
{$str2?'√':'×'}
<hr>
{$str2??'默认值'}
<hr>
{//表示$str2为真时才输出默认值。}
{$str2 ?: 'no'}
<hr>
{}


</body>
</html>